{
  "cells": [
    {
      "cell_type": "markdown",
      "source": [
        "# LDA Demo\n",
        "\n针对200篇名家散文抽取主题"
      ],
      "metadata": {}
    },
    {
      "cell_type": "markdown",
      "source": [
        "## 载入相关扩展包"
      ],
      "metadata": {}
    },
    {
      "cell_type": "code",
      "source": [
        "library(tidyverse)\n",
        "library(jsonlite)\n",
        "library(jiebaR)\n",
        "library(lda)\n",
        "library(LDAvis)"
      ],
      "outputs": [
        {
          "output_type": "stream",
          "name": "stderr",
          "text": [
            "── Attaching packages ─────────────────────────────────────── tidyverse 1.2.1 ──\n",
            "✔ ggplot2 2.2.1     ✔ purrr   0.2.4\n",
            "✔ tibble  1.3.4     ✔ dplyr   0.7.4\n",
            "✔ tidyr   0.7.2     ✔ stringr 1.2.0\n",
            "✔ readr   1.1.1     ✔ forcats 0.2.0\n",
            "── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──\n",
            "✖ dplyr::filter() masks stats::filter()\n",
            "✖ dplyr::lag()    masks stats::lag()\n",
            "\n",
            "Attaching package: ‘jsonlite’\n",
            "\n",
            "The following object is masked from ‘package:purrr’:\n",
            "\n",
            "    flatten\n",
            "\n",
            "Loading required package: jiebaRD\n"
          ]
        }
      ],
      "execution_count": 1,
      "metadata": {
        "collapsed": false,
        "outputHidden": false,
        "inputHidden": false
      }
    },
    {
      "cell_type": "markdown",
      "source": [
        "## 读入散文数据"
      ],
      "metadata": {}
    },
    {
      "cell_type": "code",
      "source": [
        "prose <- read_json('../Data/prose.json', simplifyVector = T)"
      ],
      "outputs": [],
      "execution_count": 2,
      "metadata": {
        "collapsed": false,
        "outputHidden": false,
        "inputHidden": false
      }
    },
    {
      "cell_type": "markdown",
      "source": [
        "## 对散文进行中文分词"
      ],
      "metadata": {}
    },
    {
      "cell_type": "code",
      "source": [
        "segmentor <- worker(stop_word = '../Data/stop-words-common.txt')\n",
        "content_seg <- sapply(prose$content, segment, segmentor)"
      ],
      "outputs": [],
      "execution_count": 3,
      "metadata": {
        "collapsed": false,
        "outputHidden": false,
        "inputHidden": false
      }
    },
    {
      "cell_type": "markdown",
      "source": [
        "## 统计词频，通过词的长度和词频进行过滤"
      ],
      "metadata": {}
    },
    {
      "cell_type": "code",
      "source": [
        "words_table <- table(unlist(content_seg))\n",
        "words_table_sroted <- sort(words_table, decreasing = TRUE)\n",
        "need_remove <- words_table_sroted < 5 | \n",
        "    str_length(names(words_table_sroted)) < 2 |\n",
        "    str_detect(names(words_table_sroted), regex('[0-9a-zA-Z]+'))\n",
        "words_table_sroted <- words_table_sroted[!need_remove]\n",
        "vocab <- names(words_table_sroted)"
      ],
      "outputs": [],
      "execution_count": 4,
      "metadata": {
        "collapsed": false,
        "outputHidden": false,
        "inputHidden": false
      }
    },
    {
      "cell_type": "markdown",
      "source": [
        "## 构造用于LDA的文档"
      ],
      "metadata": {}
    },
    {
      "cell_type": "code",
      "source": [
        "get_wrods <- function(x, vocab) {\n",
        "    index <- match(x, vocab)\n",
        "    index <- index[!is.na(index)]\n",
        "    rbind(as.integer(index - 1), as.integer(rep(1, length(index))))\n",
        "}\n",
        "\ndocuments <- lapply(content_seg, get_wrods, vocab)"
      ],
      "outputs": [],
      "execution_count": 5,
      "metadata": {
        "collapsed": false,
        "outputHidden": false,
        "inputHidden": false
      }
    },
    {
      "cell_type": "markdown",
      "source": [
        "## 构建LDA模型"
      ],
      "metadata": {}
    },
    {
      "cell_type": "code",
      "source": [
        "set.seed(112358)\n",
        "\n",
        "k <- 10\n",
        "max_iter <- 5000\n",
        "alpha <- 0.1\n",
        "eta <- 0.02\n",
        "\n",
        "lda_model <- lda.collapsed.gibbs.sampler(\n",
        "    documents = documents,\n",
        "    K = k,\n",
        "    vocab = vocab,\n",
        "    num.iterations = max_iter,\n",
        "    alpha = alpha,\n",
        "    eta = eta,\n",
        "    initial = NULL,\n",
        "    burnin = 0,\n",
        "    compute.log.likelihood = TRUE\n",
        ")"
      ],
      "outputs": [],
      "execution_count": 6,
      "metadata": {
        "collapsed": false,
        "outputHidden": false,
        "inputHidden": false
      }
    },
    {
      "cell_type": "markdown",
      "source": [
        "## 生成用于LDAVis可视化的JSON格式数据"
      ],
      "metadata": {}
    },
    {
      "cell_type": "code",
      "source": [
        "vis_theta <- t(apply(lda_model$document_sums + alpha, 2, function(x) x / sum(x)))\n",
        "vis_phi <- t(apply(t(lda_model$topics) + eta, 2, function(x) x / sum(x)))\n",
        "vis_frequency <- as.integer(words_table_sroted)\n",
        "vis_doc_length <- sapply(documents, function(x) sum(x[2, ]))\n",
        "vis_json <- createJSON(\n",
        "    phi = vis_phi, \n",
        "    theta = vis_theta,\n",
        "    doc.length = vis_doc_length, \n",
        "    vocab = vocab,\n",
        "    term.frequency = vis_frequency\n",
        ")"
      ],
      "outputs": [],
      "execution_count": 7,
      "metadata": {
        "collapsed": false,
        "outputHidden": false,
        "inputHidden": false
      }
    },
    {
      "cell_type": "markdown",
      "source": [
        "## 生成LDAVis的可视化HTML页面"
      ],
      "metadata": {}
    },
    {
      "cell_type": "code",
      "source": [
        "serVis(vis_json, out.dir = 'LDAVis', open.browser = F)\n",
        "writeLines(iconv(readLines('LDAVis/lda.json'), from = 'GBK', to = 'UTF8'),\n",
        "           file('LDAVis/lda.json', encoding='UTF-8'))"
      ],
      "outputs": [
        {
          "output_type": "stream",
          "name": "stderr",
          "text": [
            "Warning message in dir.create(out.dir):\n",
            "“'LDAVis' already exists”Loading required namespace: servr\n",
            "Warning message in readLines(\"LDAVis/lda.json\"):\n",
            "“incomplete final line found on 'LDAVis/lda.json'”"
          ]
        }
      ],
      "execution_count": 8,
      "metadata": {
        "collapsed": false,
        "outputHidden": false,
        "inputHidden": false
      }
    },
    {
      "cell_type": "markdown",
      "source": [
        "## 查看不同主题的关键词"
      ],
      "metadata": {}
    },
    {
      "cell_type": "code",
      "source": [
        "topic_words <- top.topic.words(lda_model$topics, num.words = 10)\n",
        "colnames(topic_words) <- paste('topic', seq(1, 10), sep = '-')\n",
        "rownames(topic_words) <- paste('word', seq(1, 10), sep = '-')\n",
        "\ntopic_words"
      ],
      "outputs": [
        {
          "output_type": "display_data",
          "data": {
            "text/html": [
              "<table>\n",
              "<thead><tr><th></th><th scope=col>topic-1</th><th scope=col>topic-2</th><th scope=col>topic-3</th><th scope=col>topic-4</th><th scope=col>topic-5</th><th scope=col>topic-6</th><th scope=col>topic-7</th><th scope=col>topic-8</th><th scope=col>topic-9</th><th scope=col>topic-10</th></tr></thead>\n",
              "<tbody>\n",
              "\t<tr><th scope=row>word-1</th><td>想到    </td><td>母亲    </td><td>教授    </td><td>中国    </td><td>朋友    </td><td>世界    </td><td>罪犯    </td><td>女人    </td><td>二月    </td><td>地方    </td></tr>\n",
              "\t<tr><th scope=row>word-2</th><td>时间    </td><td>父亲    </td><td>学生    </td><td>知识分子</td><td>三毛    </td><td>生命    </td><td>牛棚    </td><td>男人    </td><td>春天    </td><td>中国    </td></tr>\n",
              "\t<tr><th scope=row>word-3</th><td>感到    </td><td>儿子    </td><td>德国    </td><td>北大    </td><td>读书    </td><td>城市    </td><td>地狱    </td><td>陕西人  </td><td>仿佛    </td><td>想起    </td></tr>\n",
              "\t<tr><th scope=row>word-4</th><td>离开    </td><td>孩子    </td><td>老师    </td><td>国民党  </td><td>作家    </td><td>孩子    </td><td>劳改    </td><td>闲人    </td><td>地方    </td><td>事情    </td></tr>\n",
              "\t<tr><th scope=row>word-5</th><td>一条    </td><td>石头    </td><td>中国    </td><td>一点    </td><td>西安    </td><td>美丽    </td><td>大院    </td><td>奉承    </td><td>荷花    </td><td>榕树    </td></tr>\n",
              "\t<tr><th scope=row>word-6</th><td>东西    </td><td>农民    </td><td>离开    </td><td>适之    </td><td>副标题  </td><td>柔和    </td><td>人员    </td><td>陕西    </td><td>藤萝    </td><td>故事    </td></tr>\n",
              "\t<tr><th scope=row>word-7</th><td>却是    </td><td>两个    </td><td>乔木    </td><td>文章    </td><td>作品    </td><td>红柳    </td><td>折磨    </td><td>孔子    </td><td>燕园    </td><td>土地    </td></tr>\n",
              "\t<tr><th scope=row>word-8</th><td>心情    </td><td>坐在    </td><td>十年    </td><td>胡适    </td><td>写作    </td><td>好像    </td><td>胖子    </td><td>有人    </td><td>海棠    </td><td>仙人掌  </td></tr>\n",
              "\t<tr><th scope=row>word-9</th><td>一位    </td><td>一块    </td><td>西克    </td><td>印度    </td><td>东西    </td><td>明白    </td><td>牢头    </td><td>女子    </td><td>花朵    </td><td>广州    </td></tr>\n",
              "\t<tr><th scope=row>word-10</th><td>仿佛    </td><td>说话    </td><td>家里    </td><td>思想    </td><td>文章    </td><td>旷野    </td><td>禁子    </td><td>英雄    </td><td>叶子    </td><td>江南    </td></tr>\n",
              "</tbody>\n",
              "</table>\n"
            ],
            "text/markdown": [
              "\n",
              "| <!--/--> | topic-1 | topic-2 | topic-3 | topic-4 | topic-5 | topic-6 | topic-7 | topic-8 | topic-9 | topic-10 | \n",
              "|---|---|---|---|---|---|---|---|---|---|\n",
              "| word-1 | 想到     | 母亲     | 教授     | 中国     | 朋友     | 世界     | 罪犯     | 女人     | 二月     | 地方     | \n",
              "| word-2 | 时间     | 父亲     | 学生     | 知识分子 | 三毛     | 生命     | 牛棚     | 男人     | 春天     | 中国     | \n",
              "| word-3 | 感到     | 儿子     | 德国     | 北大     | 读书     | 城市     | 地狱     | 陕西人   | 仿佛     | 想起     | \n",
              "| word-4 | 离开     | 孩子     | 老师     | 国民党   | 作家     | 孩子     | 劳改     | 闲人     | 地方     | 事情     | \n",
              "| word-5 | 一条     | 石头     | 中国     | 一点     | 西安     | 美丽     | 大院     | 奉承     | 荷花     | 榕树     | \n",
              "| word-6 | 东西     | 农民     | 离开     | 适之     | 副标题   | 柔和     | 人员     | 陕西     | 藤萝     | 故事     | \n",
              "| word-7 | 却是     | 两个     | 乔木     | 文章     | 作品     | 红柳     | 折磨     | 孔子     | 燕园     | 土地     | \n",
              "| word-8 | 心情     | 坐在     | 十年     | 胡适     | 写作     | 好像     | 胖子     | 有人     | 海棠     | 仙人掌   | \n",
              "| word-9 | 一位     | 一块     | 西克     | 印度     | 东西     | 明白     | 牢头     | 女子     | 花朵     | 广州     | \n",
              "| word-10 | 仿佛     | 说话     | 家里     | 思想     | 文章     | 旷野     | 禁子     | 英雄     | 叶子     | 江南     | \n",
              "\n\n"
            ],
            "text/latex": [
              "\\begin{tabular}{r|llllllllll}\n",
              "  & topic-1 & topic-2 & topic-3 & topic-4 & topic-5 & topic-6 & topic-7 & topic-8 & topic-9 & topic-10\\\\\n",
              "\\hline\n",
              "\tword-1 & 想到     & 母亲     & 教授     & 中国     & 朋友     & 世界     & 罪犯     & 女人     & 二月     & 地方    \\\\\n",
              "\tword-2 & 时间     & 父亲     & 学生     & 知识分子 & 三毛     & 生命     & 牛棚     & 男人     & 春天     & 中国    \\\\\n",
              "\tword-3 & 感到     & 儿子     & 德国     & 北大     & 读书     & 城市     & 地狱     & 陕西人   & 仿佛     & 想起    \\\\\n",
              "\tword-4 & 离开     & 孩子     & 老师     & 国民党   & 作家     & 孩子     & 劳改     & 闲人     & 地方     & 事情    \\\\\n",
              "\tword-5 & 一条     & 石头     & 中国     & 一点     & 西安     & 美丽     & 大院     & 奉承     & 荷花     & 榕树    \\\\\n",
              "\tword-6 & 东西     & 农民     & 离开     & 适之     & 副标题   & 柔和     & 人员     & 陕西     & 藤萝     & 故事    \\\\\n",
              "\tword-7 & 却是     & 两个     & 乔木     & 文章     & 作品     & 红柳     & 折磨     & 孔子     & 燕园     & 土地    \\\\\n",
              "\tword-8 & 心情     & 坐在     & 十年     & 胡适     & 写作     & 好像     & 胖子     & 有人     & 海棠     & 仙人掌  \\\\\n",
              "\tword-9 & 一位     & 一块     & 西克     & 印度     & 东西     & 明白     & 牢头     & 女子     & 花朵     & 广州    \\\\\n",
              "\tword-10 & 仿佛     & 说话     & 家里     & 思想     & 文章     & 旷野     & 禁子     & 英雄     & 叶子     & 江南    \\\\\n",
              "\\end{tabular}\n"
            ],
            "text/plain": [
              "        topic-1 topic-2 topic-3 topic-4  topic-5 topic-6 topic-7 topic-8\n",
              "word-1  想到    母亲    教授    中国     朋友    世界    罪犯    女人   \n",
              "word-2  时间    父亲    学生    知识分子 三毛    生命    牛棚    男人   \n",
              "word-3  感到    儿子    德国    北大     读书    城市    地狱    陕西人 \n",
              "word-4  离开    孩子    老师    国民党   作家    孩子    劳改    闲人   \n",
              "word-5  一条    石头    中国    一点     西安    美丽    大院    奉承   \n",
              "word-6  东西    农民    离开    适之     副标题  柔和    人员    陕西   \n",
              "word-7  却是    两个    乔木    文章     作品    红柳    折磨    孔子   \n",
              "word-8  心情    坐在    十年    胡适     写作    好像    胖子    有人   \n",
              "word-9  一位    一块    西克    印度     东西    明白    牢头    女子   \n",
              "word-10 仿佛    说话    家里    思想     文章    旷野    禁子    英雄   \n",
              "        topic-9 topic-10\n",
              "word-1  二月    地方    \n",
              "word-2  春天    中国    \n",
              "word-3  仿佛    想起    \n",
              "word-4  地方    事情    \n",
              "word-5  荷花    榕树    \n",
              "word-6  藤萝    故事    \n",
              "word-7  燕园    土地    \n",
              "word-8  海棠    仙人掌  \n",
              "word-9  花朵    广州    \n",
              "word-10 叶子    江南    "
            ]
          },
          "metadata": {}
        }
      ],
      "execution_count": 9,
      "metadata": {
        "collapsed": false,
        "outputHidden": false,
        "inputHidden": false
      }
    },
    {
      "cell_type": "markdown",
      "source": [
        "## 查看隶属于不同主题的文档"
      ],
      "metadata": {}
    },
    {
      "cell_type": "code",
      "source": [
        "library(plyr)\n",
        "topic_documents <- top.topic.documents(lda_model$document_sums, num.documents = 10)\n",
        "topic_documents_detail <- aaply(topic_documents, c(1, 2), function(id) {\n",
        "    paste(prose[id, ]$author, prose[id, ]$title, sep = ' - ')\n",
        "})\n",
        "colnames(topic_documents_detail) <- paste('topic', seq(1, 10), sep = '-')\n",
        "rownames(topic_documents_detail) <- paste('prose', seq(1, 10), sep = '-')\n",
        "\ntopic_documents_detail"
      ],
      "outputs": [
        {
          "output_type": "stream",
          "name": "stderr",
          "text": [
            "------------------------------------------------------------------------------\n",
            "You have loaded plyr after dplyr - this is likely to cause problems.\n",
            "If you need functions from both plyr and dplyr, please load plyr first, then dplyr:\n",
            "library(plyr); library(dplyr)\n",
            "------------------------------------------------------------------------------\n",
            "\n",
            "Attaching package: ‘plyr’\n",
            "\n",
            "The following objects are masked from ‘package:dplyr’:\n",
            "\n",
            "    arrange, count, desc, failwith, id, mutate, rename, summarise,\n",
            "    summarize\n",
            "\n",
            "The following object is masked from ‘package:purrr’:\n",
            "\n",
            "    compact\n",
            "\n"
          ]
        },
        {
          "output_type": "display_data",
          "data": {
            "text/html": [
              "<table>\n",
              "<thead><tr><th></th><th scope=col>topic-1</th><th scope=col>topic-2</th><th scope=col>topic-3</th><th scope=col>topic-4</th><th scope=col>topic-5</th><th scope=col>topic-6</th><th scope=col>topic-7</th><th scope=col>topic-8</th><th scope=col>topic-9</th><th scope=col>topic-10</th></tr></thead>\n",
              "<tbody>\n",
              "\t<tr><th scope=row>prose-1</th><td>季羡林 - 八十述怀(2)                         </td><td>贾平凹 - 我不是个好儿子                      </td><td>季羡林 - 迈耶一家                            </td><td>季羡林 - 为胡适说几句话(1)                   </td><td>贾平凹 - 治病救人                            </td><td>贾平凹 - 对月                                </td><td>季羡林 - 在饥饿地狱中(2)                     </td><td>贾平凹 - 陶俑                                </td><td>季羡林 - 幽径悲剧(1)                         </td><td>秦牧 - 榕树的美髯                            </td></tr>\n",
              "\t<tr><th scope=row>prose-2</th><td>季羡林 - 虎年抒怀(1)                         </td><td>贾平凹 - 风雨                                </td><td>季羡林 - 迈耶一家                            </td><td>季羡林 - 一个老知识分子的心声(2)             </td><td>贾平凹 - 吃烟                                </td><td>毕淑敏 - 谎言三叶草                          </td><td>季羡林 - 在饥饿地狱中(2)                     </td><td>贾平凹 - 陶俑                                </td><td>季羡林 - 二月兰(1)                           </td><td>秦牧 - 花城                                  </td></tr>\n",
              "\t<tr><th scope=row>prose-3</th><td>季羡林 - 一条老狗(3)                         </td><td>余光中 - 招魂的短笛--余光中                  </td><td>季羡林 - 我的老师们(3)                       </td><td>秦牧 - 流氓经                                </td><td>贾平凹 - 《观云奇石》序                      </td><td>毕淑敏 - 鱼在波涛下微笑                      </td><td>季羡林 - 牛棚生活(5)                         </td><td>毕淑敏 - 失去四肢的泳者                      </td><td>季羡林 - 二月兰(1)                           </td><td>秦牧 - 花街十里一城春                        </td></tr>\n",
              "\t<tr><th scope=row>prose-4</th><td>季羡林 - 新年抒怀(1)                         </td><td>贾平凹 - 关于父子                            </td><td>余秋雨 - 诗歌文字                            </td><td>季羡林 - 一个老知识分子的心声(1)             </td><td>季羡林 - 虎年抒怀(3)                         </td><td>毕淑敏 - 关于生命与命运的遐想                </td><td>季羡林 - 牛棚生活(6)                         </td><td>贾平凹 - 女人与陶瓶                          </td><td>季羡林 - 幽径悲剧(1)                         </td><td>秦牧 - 去雾的家乡松石的画廊——赣东北三清山漫记</td></tr>\n",
              "\t<tr><th scope=row>prose-5</th><td>季羡林 - 九十述怀(3)                         </td><td>贾平凹 - 天马                                </td><td>季羡林 - 学习吐火罗文(1)                     </td><td>季羡林 - 为胡适说几句话(2)                   </td><td>贾平凹 - 好读书                              </td><td>贾平凹 - 两代人                              </td><td>季羡林 - 牛棚生活(9)                         </td><td>贾平凹 - 石头沟里一位复退军人                </td><td>季羡林 - 怀念西府海棠(1)                     </td><td>余光中 - 春天，遂想起                        </td></tr>\n",
              "\t<tr><th scope=row>prose-6</th><td>季羡林 - 新年抒怀(2)                         </td><td>贾平凹 - 乡党王盛华                          </td><td>季羡林 - 我的老师们(2)                       </td><td>季羡林 - 记张岱年先生                        </td><td>贾平凹 - 孙存蝶                              </td><td>毕淑敏 - 旷野与城市——毕淑敏                  </td><td>季羡林 - 牛棚生活(10)                        </td><td>贾平凹 - 说奉承                              </td><td>季羡林 - 清塘荷韵(1)                         </td><td>秦牧 - 神秘瑰丽的地下河                      </td></tr>\n",
              "\t<tr><th scope=row>prose-7</th><td>季羡林 - 虎年抒怀(2)                         </td><td>贾平凹 - 笑口常开                            </td><td>季羡林 - 我的老师们(1)                       </td><td>季羡林 - 回忆陈寅恪先生(3)                   </td><td>贾平凹 - 茶杯                                </td><td>毕淑敏 - 离太阳最近的树                      </td><td>季羡林 - 牛棚生活(2)                         </td><td>贾平凹 - 关于女人                            </td><td>季羡林 - 幽径悲剧(2)                         </td><td>秦牧 - 谈谈李莲英——一代杰出的奴才            </td></tr>\n",
              "\t<tr><th scope=row>prose-8</th><td>季羡林 - 牛棚杂忆——缘起(2)                   </td><td>贾平凹 - 制造声音                            </td><td>季羡林 - 学习吐火罗文(2)                     </td><td>季羡林 - 站在胡适之先生墓前(2)               </td><td>贾平凹 - 致李珖                              </td><td>毕淑敏 - 柔和——毕淑敏                        </td><td>季羡林 - 牛棚生活(3)                         </td><td>贾平凹 - 听来的故事                          </td><td>季羡林 - 马缨花(2)                           </td><td>秦牧 - 土地                                  </td></tr>\n",
              "\t<tr><th scope=row>prose-9</th><td>季羡林 - 一条老狗(1)                         </td><td>季羡林 - 赋得永久的悔(1)                     </td><td>季羡林 - 重返哥廷根(2)                       </td><td>季羡林 - 我的心是一面镜子(9)                 </td><td>贾平凹 - 朋友                                </td><td>毕淑敏 - 关于人生的沉思                      </td><td>季羡林 - 牛棚生活(1)                         </td><td>贾平凹 - 进山东                              </td><td>季羡林 - 夹竹桃                              </td><td>秦牧 - 在遥远的海岸上                        </td></tr>\n",
              "\t<tr><th scope=row>prose-10</th><td>张爱玲 - 精致女子之张爱玲                    </td><td>贾平凹 - 祭父                                </td><td>季羡林 - 我的心是一面镜子(6)                 </td><td>季羡林 - 我的心是一面镜子(8)                 </td><td>贾平凹 - 李相虎                              </td><td>毕淑敏 - 爱怕什么？                          </td><td>季羡林 - 牛棚杂忆——缘起(1)                   </td><td>贾平凹 - 闲人                                </td><td>季羡林 - 新年抒怀(3)                         </td><td>秦牧 - 仙人掌                                </td></tr>\n",
              "</tbody>\n",
              "</table>\n"
            ],
            "text/markdown": [
              "\n",
              "| <!--/--> | topic-1 | topic-2 | topic-3 | topic-4 | topic-5 | topic-6 | topic-7 | topic-8 | topic-9 | topic-10 | \n",
              "|---|---|---|---|---|---|---|---|---|---|\n",
              "| prose-1 | 季羡林 - 八十述怀(2)                          | 贾平凹 - 我不是个好儿子                       | 季羡林 - 迈耶一家                             | 季羡林 - 为胡适说几句话(1)                    | 贾平凹 - 治病救人                             | 贾平凹 - 对月                                 | 季羡林 - 在饥饿地狱中(2)                      | 贾平凹 - 陶俑                                 | 季羡林 - 幽径悲剧(1)                          | 秦牧 - 榕树的美髯                             | \n",
              "| prose-2 | 季羡林 - 虎年抒怀(1)                          | 贾平凹 - 风雨                                 | 季羡林 - 迈耶一家                             | 季羡林 - 一个老知识分子的心声(2)              | 贾平凹 - 吃烟                                 | 毕淑敏 - 谎言三叶草                           | 季羡林 - 在饥饿地狱中(2)                      | 贾平凹 - 陶俑                                 | 季羡林 - 二月兰(1)                            | 秦牧 - 花城                                   | \n",
              "| prose-3 | 季羡林 - 一条老狗(3)                          | 余光中 - 招魂的短笛--余光中                   | 季羡林 - 我的老师们(3)                        | 秦牧 - 流氓经                                 | 贾平凹 - 《观云奇石》序                       | 毕淑敏 - 鱼在波涛下微笑                       | 季羡林 - 牛棚生活(5)                          | 毕淑敏 - 失去四肢的泳者                       | 季羡林 - 二月兰(1)                            | 秦牧 - 花街十里一城春                         | \n",
              "| prose-4 | 季羡林 - 新年抒怀(1)                          | 贾平凹 - 关于父子                             | 余秋雨 - 诗歌文字                             | 季羡林 - 一个老知识分子的心声(1)              | 季羡林 - 虎年抒怀(3)                          | 毕淑敏 - 关于生命与命运的遐想                 | 季羡林 - 牛棚生活(6)                          | 贾平凹 - 女人与陶瓶                           | 季羡林 - 幽径悲剧(1)                          | 秦牧 - 去雾的家乡松石的画廊——赣东北三清山漫记 | \n",
              "| prose-5 | 季羡林 - 九十述怀(3)                          | 贾平凹 - 天马                                 | 季羡林 - 学习吐火罗文(1)                      | 季羡林 - 为胡适说几句话(2)                    | 贾平凹 - 好读书                               | 贾平凹 - 两代人                               | 季羡林 - 牛棚生活(9)                          | 贾平凹 - 石头沟里一位复退军人                 | 季羡林 - 怀念西府海棠(1)                      | 余光中 - 春天，遂想起                         | \n",
              "| prose-6 | 季羡林 - 新年抒怀(2)                          | 贾平凹 - 乡党王盛华                           | 季羡林 - 我的老师们(2)                        | 季羡林 - 记张岱年先生                         | 贾平凹 - 孙存蝶                               | 毕淑敏 - 旷野与城市——毕淑敏                   | 季羡林 - 牛棚生活(10)                         | 贾平凹 - 说奉承                               | 季羡林 - 清塘荷韵(1)                          | 秦牧 - 神秘瑰丽的地下河                       | \n",
              "| prose-7 | 季羡林 - 虎年抒怀(2)                          | 贾平凹 - 笑口常开                             | 季羡林 - 我的老师们(1)                        | 季羡林 - 回忆陈寅恪先生(3)                    | 贾平凹 - 茶杯                                 | 毕淑敏 - 离太阳最近的树                       | 季羡林 - 牛棚生活(2)                          | 贾平凹 - 关于女人                             | 季羡林 - 幽径悲剧(2)                          | 秦牧 - 谈谈李莲英——一代杰出的奴才             | \n",
              "| prose-8 | 季羡林 - 牛棚杂忆——缘起(2)                    | 贾平凹 - 制造声音                             | 季羡林 - 学习吐火罗文(2)                      | 季羡林 - 站在胡适之先生墓前(2)                | 贾平凹 - 致李珖                               | 毕淑敏 - 柔和——毕淑敏                         | 季羡林 - 牛棚生活(3)                          | 贾平凹 - 听来的故事                           | 季羡林 - 马缨花(2)                            | 秦牧 - 土地                                   | \n",
              "| prose-9 | 季羡林 - 一条老狗(1)                          | 季羡林 - 赋得永久的悔(1)                      | 季羡林 - 重返哥廷根(2)                        | 季羡林 - 我的心是一面镜子(9)                  | 贾平凹 - 朋友                                 | 毕淑敏 - 关于人生的沉思                       | 季羡林 - 牛棚生活(1)                          | 贾平凹 - 进山东                               | 季羡林 - 夹竹桃                               | 秦牧 - 在遥远的海岸上                         | \n",
              "| prose-10 | 张爱玲 - 精致女子之张爱玲                     | 贾平凹 - 祭父                                 | 季羡林 - 我的心是一面镜子(6)                  | 季羡林 - 我的心是一面镜子(8)                  | 贾平凹 - 李相虎                               | 毕淑敏 - 爱怕什么？                           | 季羡林 - 牛棚杂忆——缘起(1)                    | 贾平凹 - 闲人                                 | 季羡林 - 新年抒怀(3)                          | 秦牧 - 仙人掌                                 | \n",
              "\n\n"
            ],
            "text/latex": [
              "\\begin{tabular}{r|llllllllll}\n",
              "  & topic-1 & topic-2 & topic-3 & topic-4 & topic-5 & topic-6 & topic-7 & topic-8 & topic-9 & topic-10\\\\\n",
              "\\hline\n",
              "\tprose-1 & 季羡林 - 八十述怀(2)                          & 贾平凹 - 我不是个好儿子                       & 季羡林 - 迈耶一家                             & 季羡林 - 为胡适说几句话(1)                    & 贾平凹 - 治病救人                             & 贾平凹 - 对月                                 & 季羡林 - 在饥饿地狱中(2)                      & 贾平凹 - 陶俑                                 & 季羡林 - 幽径悲剧(1)                          & 秦牧 - 榕树的美髯                            \\\\\n",
              "\tprose-2 & 季羡林 - 虎年抒怀(1)                          & 贾平凹 - 风雨                                 & 季羡林 - 迈耶一家                             & 季羡林 - 一个老知识分子的心声(2)              & 贾平凹 - 吃烟                                 & 毕淑敏 - 谎言三叶草                           & 季羡林 - 在饥饿地狱中(2)                      & 贾平凹 - 陶俑                                 & 季羡林 - 二月兰(1)                            & 秦牧 - 花城                                  \\\\\n",
              "\tprose-3 & 季羡林 - 一条老狗(3)                          & 余光中 - 招魂的短笛--余光中                   & 季羡林 - 我的老师们(3)                        & 秦牧 - 流氓经                                 & 贾平凹 - 《观云奇石》序                       & 毕淑敏 - 鱼在波涛下微笑                       & 季羡林 - 牛棚生活(5)                          & 毕淑敏 - 失去四肢的泳者                       & 季羡林 - 二月兰(1)                            & 秦牧 - 花街十里一城春                        \\\\\n",
              "\tprose-4 & 季羡林 - 新年抒怀(1)                          & 贾平凹 - 关于父子                             & 余秋雨 - 诗歌文字                             & 季羡林 - 一个老知识分子的心声(1)              & 季羡林 - 虎年抒怀(3)                          & 毕淑敏 - 关于生命与命运的遐想                 & 季羡林 - 牛棚生活(6)                          & 贾平凹 - 女人与陶瓶                           & 季羡林 - 幽径悲剧(1)                          & 秦牧 - 去雾的家乡松石的画廊——赣东北三清山漫记\\\\\n",
              "\tprose-5 & 季羡林 - 九十述怀(3)                          & 贾平凹 - 天马                                 & 季羡林 - 学习吐火罗文(1)                      & 季羡林 - 为胡适说几句话(2)                    & 贾平凹 - 好读书                               & 贾平凹 - 两代人                               & 季羡林 - 牛棚生活(9)                          & 贾平凹 - 石头沟里一位复退军人                 & 季羡林 - 怀念西府海棠(1)                      & 余光中 - 春天，遂想起                        \\\\\n",
              "\tprose-6 & 季羡林 - 新年抒怀(2)                          & 贾平凹 - 乡党王盛华                           & 季羡林 - 我的老师们(2)                        & 季羡林 - 记张岱年先生                         & 贾平凹 - 孙存蝶                               & 毕淑敏 - 旷野与城市——毕淑敏                   & 季羡林 - 牛棚生活(10)                         & 贾平凹 - 说奉承                               & 季羡林 - 清塘荷韵(1)                          & 秦牧 - 神秘瑰丽的地下河                      \\\\\n",
              "\tprose-7 & 季羡林 - 虎年抒怀(2)                          & 贾平凹 - 笑口常开                             & 季羡林 - 我的老师们(1)                        & 季羡林 - 回忆陈寅恪先生(3)                    & 贾平凹 - 茶杯                                 & 毕淑敏 - 离太阳最近的树                       & 季羡林 - 牛棚生活(2)                          & 贾平凹 - 关于女人                             & 季羡林 - 幽径悲剧(2)                          & 秦牧 - 谈谈李莲英——一代杰出的奴才            \\\\\n",
              "\tprose-8 & 季羡林 - 牛棚杂忆——缘起(2)                    & 贾平凹 - 制造声音                             & 季羡林 - 学习吐火罗文(2)                      & 季羡林 - 站在胡适之先生墓前(2)                & 贾平凹 - 致李珖                               & 毕淑敏 - 柔和——毕淑敏                         & 季羡林 - 牛棚生活(3)                          & 贾平凹 - 听来的故事                           & 季羡林 - 马缨花(2)                            & 秦牧 - 土地                                  \\\\\n",
              "\tprose-9 & 季羡林 - 一条老狗(1)                          & 季羡林 - 赋得永久的悔(1)                      & 季羡林 - 重返哥廷根(2)                        & 季羡林 - 我的心是一面镜子(9)                  & 贾平凹 - 朋友                                 & 毕淑敏 - 关于人生的沉思                       & 季羡林 - 牛棚生活(1)                          & 贾平凹 - 进山东                               & 季羡林 - 夹竹桃                               & 秦牧 - 在遥远的海岸上                        \\\\\n",
              "\tprose-10 & 张爱玲 - 精致女子之张爱玲                     & 贾平凹 - 祭父                                 & 季羡林 - 我的心是一面镜子(6)                  & 季羡林 - 我的心是一面镜子(8)                  & 贾平凹 - 李相虎                               & 毕淑敏 - 爱怕什么？                           & 季羡林 - 牛棚杂忆——缘起(1)                    & 贾平凹 - 闲人                                 & 季羡林 - 新年抒怀(3)                          & 秦牧 - 仙人掌                                \\\\\n",
              "\\end{tabular}\n"
            ],
            "text/plain": [
              "          X2\n",
              "X1         topic-1                    topic-2                    \n",
              "  prose-1  季羡林 - 八十述怀(2)       贾平凹 - 我不是个好儿子    \n",
              "  prose-2  季羡林 - 虎年抒怀(1)       贾平凹 - 风雨              \n",
              "  prose-3  季羡林 - 一条老狗(3)       余光中 - 招魂的短笛--余光中\n",
              "  prose-4  季羡林 - 新年抒怀(1)       贾平凹 - 关于父子          \n",
              "  prose-5  季羡林 - 九十述怀(3)       贾平凹 - 天马              \n",
              "  prose-6  季羡林 - 新年抒怀(2)       贾平凹 - 乡党王盛华        \n",
              "  prose-7  季羡林 - 虎年抒怀(2)       贾平凹 - 笑口常开          \n",
              "  prose-8  季羡林 - 牛棚杂忆——缘起(2) 贾平凹 - 制造声音          \n",
              "  prose-9  季羡林 - 一条老狗(1)       季羡林 - 赋得永久的悔(1)   \n",
              "  prose-10 张爱玲 - 精致女子之张爱玲  贾平凹 - 祭父              \n",
              "          X2\n",
              "X1         topic-3                      topic-4                         \n",
              "  prose-1  季羡林 - 迈耶一家            季羡林 - 为胡适说几句话(1)      \n",
              "  prose-2  季羡林 - 迈耶一家            季羡林 - 一个老知识分子的心声(2)\n",
              "  prose-3  季羡林 - 我的老师们(3)       秦牧 - 流氓经                   \n",
              "  prose-4  余秋雨 - 诗歌文字            季羡林 - 一个老知识分子的心声(1)\n",
              "  prose-5  季羡林 - 学习吐火罗文(1)     季羡林 - 为胡适说几句话(2)      \n",
              "  prose-6  季羡林 - 我的老师们(2)       季羡林 - 记张岱年先生           \n",
              "  prose-7  季羡林 - 我的老师们(1)       季羡林 - 回忆陈寅恪先生(3)      \n",
              "  prose-8  季羡林 - 学习吐火罗文(2)     季羡林 - 站在胡适之先生墓前(2)  \n",
              "  prose-9  季羡林 - 重返哥廷根(2)       季羡林 - 我的心是一面镜子(9)    \n",
              "  prose-10 季羡林 - 我的心是一面镜子(6) 季羡林 - 我的心是一面镜子(8)    \n",
              "          X2\n",
              "X1         topic-5                 topic-6                      \n",
              "  prose-1  贾平凹 - 治病救人       贾平凹 - 对月                \n",
              "  prose-2  贾平凹 - 吃烟           毕淑敏 - 谎言三叶草          \n",
              "  prose-3  贾平凹 - 《观云奇石》序 毕淑敏 - 鱼在波涛下微笑      \n",
              "  prose-4  季羡林 - 虎年抒怀(3)    毕淑敏 - 关于生命与命运的遐想\n",
              "  prose-5  贾平凹 - 好读书         贾平凹 - 两代人              \n",
              "  prose-6  贾平凹 - 孙存蝶         毕淑敏 - 旷野与城市——毕淑敏  \n",
              "  prose-7  贾平凹 - 茶杯           毕淑敏 - 离太阳最近的树      \n",
              "  prose-8  贾平凹 - 致李珖         毕淑敏 - 柔和——毕淑敏        \n",
              "  prose-9  贾平凹 - 朋友           毕淑敏 - 关于人生的沉思      \n",
              "  prose-10 贾平凹 - 李相虎         毕淑敏 - 爱怕什么？          \n",
              "          X2\n",
              "X1         topic-7                    topic-8                      \n",
              "  prose-1  季羡林 - 在饥饿地狱中(2)   贾平凹 - 陶俑                \n",
              "  prose-2  季羡林 - 在饥饿地狱中(2)   贾平凹 - 陶俑                \n",
              "  prose-3  季羡林 - 牛棚生活(5)       毕淑敏 - 失去四肢的泳者      \n",
              "  prose-4  季羡林 - 牛棚生活(6)       贾平凹 - 女人与陶瓶          \n",
              "  prose-5  季羡林 - 牛棚生活(9)       贾平凹 - 石头沟里一位复退军人\n",
              "  prose-6  季羡林 - 牛棚生活(10)      贾平凹 - 说奉承              \n",
              "  prose-7  季羡林 - 牛棚生活(2)       贾平凹 - 关于女人            \n",
              "  prose-8  季羡林 - 牛棚生活(3)       贾平凹 - 听来的故事          \n",
              "  prose-9  季羡林 - 牛棚生活(1)       贾平凹 - 进山东              \n",
              "  prose-10 季羡林 - 牛棚杂忆——缘起(1) 贾平凹 - 闲人                \n",
              "          X2\n",
              "X1         topic-9                 \n",
              "  prose-1  季羡林 - 幽径悲剧(1)    \n",
              "  prose-2  季羡林 - 二月兰(1)      \n",
              "  prose-3  季羡林 - 二月兰(1)      \n",
              "  prose-4  季羡林 - 幽径悲剧(1)    \n",
              "  prose-5  季羡林 - 怀念西府海棠(1)\n",
              "  prose-6  季羡林 - 清塘荷韵(1)    \n",
              "  prose-7  季羡林 - 幽径悲剧(2)    \n",
              "  prose-8  季羡林 - 马缨花(2)      \n",
              "  prose-9  季羡林 - 夹竹桃         \n",
              "  prose-10 季羡林 - 新年抒怀(3)    \n",
              "          X2\n",
              "X1         topic-10                                     \n",
              "  prose-1  秦牧 - 榕树的美髯                            \n",
              "  prose-2  秦牧 - 花城                                  \n",
              "  prose-3  秦牧 - 花街十里一城春                        \n",
              "  prose-4  秦牧 - 去雾的家乡松石的画廊——赣东北三清山漫记\n",
              "  prose-5  余光中 - 春天，遂想起                        \n",
              "  prose-6  秦牧 - 神秘瑰丽的地下河                      \n",
              "  prose-7  秦牧 - 谈谈李莲英——一代杰出的奴才            \n",
              "  prose-8  秦牧 - 土地                                  \n",
              "  prose-9  秦牧 - 在遥远的海岸上                        \n",
              "  prose-10 秦牧 - 仙人掌                                "
            ]
          },
          "metadata": {}
        }
      ],
      "execution_count": 10,
      "metadata": {
        "collapsed": false,
        "outputHidden": false,
        "inputHidden": false
      }
    }
  ],
  "metadata": {
    "kernelspec": {
      "name": "ir",
      "language": "R",
      "display_name": "R"
    },
    "kernel_info": {
      "name": "ir"
    },
    "language_info": {
      "name": "R",
      "codemirror_mode": "r",
      "pygments_lexer": "r",
      "mimetype": "text/x-r-source",
      "file_extension": ".r",
      "version": "3.4.2"
    },
    "nteract": {
      "version": "0.8.4"
    }
  },
  "nbformat": 4,
  "nbformat_minor": 4
}